//1、引入express
// commonJS中的语法导入--require，导出--exports是对象
// ES6语法：import--导入 ，export--导出
let express = require('express')
let bodyParser = require('body-parser')
const { Jwt } = require('./jwt.js')
let JWT = require('./jwt.js').Jwt
//设置解析方式，不是json格式参数的解析方式
let urlencoded = bodyParser.urlencoded({ extended: false })
//2、创建服务对象
let app = express()
//3、指定程序运行的端口
let port = 3000

//处理静态资源
app.use(express.static('static'))

//设置跨域
app.use('*', function(request, response, next) {
  
  response.header('Access-Control-Allow-Origin', '*')
  //允许所有类型的请求头
  response.header('Access-Control-Allow-Headers', '*')
  //对请求和响应进行放行
  next()
})

//5、接收请求返回数据
app.get('/', urlencoded, (request, response) => {
  //一般情况下 参数是在 params:{},query:{},body:{}
  let { query } = request
  console.log(query)
  response.send(JSON.stringify(query))
})
//6、接收post请求
app.post('/login', urlencoded, (request, response) => {
  let { query, body } = request
  console.log(query, body)
  
  //判断是否是空对象={},属性个数为0
  let queryLength = Object.keys(query).length
  if (queryLength) {
    let { username } = query
    let jwt  = new JWT(username)
    let token = jwt.generateToken();
    query.token = token
    response.send(query)
  } else {
    let { username } = body
    let jwt = new JWT(username)
    let token = jwt.generateToken();
    body.token = token
    response.send(body)
  }
})

//7、请求用户列表
app.post('/userList',urlencoded,(request,response)=>{
  let header = request.headers
  let body = request.body
  let token = header.token
  if(token==='null'){
    return response.send('没有登录')
  }
  let jwt = new Jwt(token)
  let flag = jwt.verifyToken()
  console.log(flag)
  if(flag ==='err'){
    return response.send('请重新登录')
  }
  response.send('userList')
})


//4、启动服务监听程序
app.listen(port, () => {
  console.log(`Server is running on 3000`)
})



/*
* 1、创建项目
* 2、初始化项目npm init -y
* 3、安装express到本地依赖 npm i express --save
* 4、创建app.js文件，在文件中引入express文件
* 5、创建服务对象 let app = express()
* 6、启动服务 app.listen(port,()=>{})
* 7、监听请求，返回数据
*   app.get("/",(request,response)=>{response.send('内容')})
*/

/*
* 获得get和post的请求参数
* 1、使用第三方模块，body-parser
* 2、安装body-parser到本地项目 npm i body-parser --save
* 3、引入body-parser模块
* 4、设置body-parser解析请求参数的方式
* 5、使用body-parser解析方式
* */

/*
* express处理静态资源
* app.use(express.static('static'))
* http://127.0.0.1:3000/pic.jpg,默认到static文件夹中找pic.jpg，然后返回
* */